﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace IPlugin
{
    public class RequestUrl
    {
        public bool HasParameter { get; private set; }
        public string Path { get; private set; } //teil vor dem ?
        public string FullParameters { get; private set; } //teil nach dem ?
        public Dictionary<string, string> ParameterList { get; private set; }

        public RequestUrl(string url)
        {
            ParameterList = new Dictionary<string, string>();
            string[] ary = url.Split(new[] { '?' }, 2);

            if (ary.Length == 1)
            {
                //Url hat keine Parameter wie z.B. ?id=1
                HasParameter = false;
            }
            else
            {
                HasParameter = true;
            }

            //teil vor dem ?
            Path = ary[0];
            //Mehrfach vorkommende '/' hintereinander entfernen
            Path = System.Text.RegularExpressions.Regex.Replace(Path, "[/]+", "/");
            
            //wenn true, gibt es Parameter nach dem ?
            if (ary.Length > 1)
            {
                //teil nach dem ?
                FullParameters = ary[1];
                string[] parameters = FullParameters.Split('&');

                foreach (string p in parameters)
                {
                    string[] paramStr = p.Split('=');

                    if (paramStr.Length == 1)
                    {
                        //Parameter ohne value ?id
                        ParameterList[HttpUtility.UrlDecode(paramStr[0], Encoding.GetEncoding(1252))] = "";
                    }
                    else if (paramStr.Length == 2)
                    {
                        //Parameter mit value ?id=1337
                        ParameterList[HttpUtility.UrlDecode(paramStr[0], Encoding.GetEncoding(1252))] = HttpUtility.UrlDecode(paramStr[1], Encoding.GetEncoding(1252));
                    }
                }
            }
        }
        
    }
}
